﻿using System;

namespace Teigha.Core
{
	public class OdGiViewport_Internal : OdGiViewport
	{
		public OdGiViewport_Internal(IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn)
		{
		}

		public override OdGeMatrix3d getModelToEyeTransform()
		{
			IntPtr cPtr = GlobalsPINVOKE.OdGiViewport_getModelToEyeTransform(OdGiViewport.getCPtr(this));
			OdGeMatrix3d result = new OdGeMatrix3d(cPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override OdGeMatrix3d getEyeToModelTransform()
		{
			IntPtr cPtr = GlobalsPINVOKE.OdGiViewport_getEyeToModelTransform(OdGiViewport.getCPtr(this));
			OdGeMatrix3d result = new OdGeMatrix3d(cPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override OdGeMatrix3d getWorldToEyeTransform()
		{
			IntPtr cPtr = GlobalsPINVOKE.OdGiViewport_getWorldToEyeTransform(OdGiViewport.getCPtr(this));
			OdGeMatrix3d result = new OdGeMatrix3d(cPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override OdGeMatrix3d getEyeToWorldTransform()
		{
			IntPtr cPtr = GlobalsPINVOKE.OdGiViewport_getEyeToWorldTransform(OdGiViewport.getCPtr(this));
			OdGeMatrix3d result = new OdGeMatrix3d(cPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override bool isPerspective()
		{
			bool result = GlobalsPINVOKE.OdGiViewport_isPerspective(OdGiViewport.getCPtr(this));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override bool doPerspective(OdGePoint3d point)
		{
			bool result = GlobalsPINVOKE.OdGiViewport_doPerspective(OdGiViewport.getCPtr(this), OdGePoint3d.getCPtr(point));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override bool doInversePerspective(OdGePoint3d point)
		{
			bool result = GlobalsPINVOKE.OdGiViewport_doInversePerspective(OdGiViewport.getCPtr(this), OdGePoint3d.getCPtr(point));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override OdGePoint3d getCameraLocation()
		{
			IntPtr cPtr = GlobalsPINVOKE.OdGiViewport_getCameraLocation(OdGiViewport.getCPtr(this));
			OdGePoint3d result = new OdGePoint3d(cPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override OdGePoint3d getCameraTarget()
		{
			IntPtr cPtr = GlobalsPINVOKE.OdGiViewport_getCameraTarget(OdGiViewport.getCPtr(this));
			OdGePoint3d result = new OdGePoint3d(cPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override OdGeVector3d getCameraUpVector()
		{
			IntPtr cPtr = GlobalsPINVOKE.OdGiViewport_getCameraUpVector(OdGiViewport.getCPtr(this));
			OdGeVector3d result = new OdGeVector3d(cPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override OdGeVector3d viewDir()
		{
			IntPtr cPtr = GlobalsPINVOKE.OdGiViewport_viewDir(OdGiViewport.getCPtr(this));
			OdGeVector3d result = new OdGeVector3d(cPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override uint viewportId()
		{
			uint result = GlobalsPINVOKE.OdGiViewport_viewportId(OdGiViewport.getCPtr(this));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override short acadWindowId()
		{
			short result = GlobalsPINVOKE.OdGiViewport_acadWindowId(OdGiViewport.getCPtr(this));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override void getViewportDcCorners(OdGePoint2d lowerLeft, OdGePoint2d upperRight)
		{
			GlobalsPINVOKE.OdGiViewport_getViewportDcCorners(OdGiViewport.getCPtr(this), OdGePoint2d.getCPtr(lowerLeft), OdGePoint2d.getCPtr(upperRight));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public override bool getFrontAndBackClipValues(out bool clipFront, out bool clipBack, out double front, out double back)
		{
			bool result = GlobalsPINVOKE.OdGiViewport_getFrontAndBackClipValues(OdGiViewport.getCPtr(this), out clipFront, out clipBack, out front, out back);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override double linetypeScaleMultiplier()
		{
			double result = GlobalsPINVOKE.OdGiViewport_linetypeScaleMultiplier(OdGiViewport.getCPtr(this));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override double linetypeGenerationCriteria()
		{
			double result = GlobalsPINVOKE.OdGiViewport_linetypeGenerationCriteria(OdGiViewport.getCPtr(this));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override bool layerVisible(OdDbStub layerId)
		{
			bool result = GlobalsPINVOKE.OdGiViewport_layerVisible(OdGiViewport.getCPtr(this), OdDbStub.getCPtr(layerId));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override OdGiContextualColors contextualColors()
		{
			IntPtr intPtr = GlobalsPINVOKE.OdGiViewport_contextualColors(OdGiViewport.getCPtr(this));
			OdGiContextualColors result = (intPtr == IntPtr.Zero) ? null : new OdGiContextualColors(intPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override void getNumPixelsInUnitSquare(OdGePoint3d point, OdGePoint2d pixelDensity, bool bUsePerspective)
		{
			GlobalsPINVOKE.OdGiViewport_getNumPixelsInUnitSquare__SWIG_0(OdGiViewport.getCPtr(this), OdGePoint3d.getCPtr(point), OdGePoint2d.getCPtr(pixelDensity), bUsePerspective);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public override void getNumPixelsInUnitSquare(OdGePoint3d point, OdGePoint2d pixelDensity)
		{
			GlobalsPINVOKE.OdGiViewport_getNumPixelsInUnitSquare__SWIG_1(OdGiViewport.getCPtr(this), OdGePoint3d.getCPtr(point), OdGePoint2d.getCPtr(pixelDensity));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}
	}
}
